<?php

class UserIdentity extends CUserIdentity
{
	private $_id;
	
	public function authenticate()
	{
		$user = User::model()->find('LOWER(username)=?', array(strtolower($this->username)));
		if ($user === null){
			$user = User::model()->find('LOWER(email)=?', array(strtolower($this->username)));
			if ($user === null){
				$this->errorCode = self::ERROR_USERNAME_INVALID;
				return 0;
			}
		}
		
		if (!$user->validatePassword($this->password)){
			$this->errorCode = self::ERROR_PASSWORD_INVALID;
			return 0;
		}
		else {
			$this->_id = $user->id;
			if($user->isAdmin){
				$this->setState('isAdmin', $user->isAdmin);
			}
			$this->username = $user->username;
			
			$this->setState('email', $user->email);
			$this->setState('username', $user->username);

			$this->errorCode = self::ERROR_NONE;
		}
		return $this->errorCode == self::ERROR_NONE;
	}
	
	public function getId() {
		return $this->_id;
	}
}